﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotasDesktop.GD1C2012DataSetTableAdapters;
using GestorDeFlotas.Core;

namespace GestorDeFlotasDesktop.Facturar
{
    public partial class DatosFactura : Form
    {
        public DatosFactura()
        {
            InitializeComponent();
        }

        public int IdCliente { get; set; }
        public int Mes { get; set; }
        public int Anio { get; set; }
        decimal TotalFacturado;

        private void DatosFactura_Load(object sender, EventArgs e)
        {
            // Primer verifico si hay viajes a facturar
            if (this.detallesFacturasTableAdapter.ScalarQuery_CantViajes(this.IdCliente, this.Mes, this.Anio) > 0)
            {
                
                this.detallesFacturasTableAdapter.FillBy_CodigoCliente(this.gD1C2012DataSet.DetallesFacturas, this.IdCliente, this.Mes, this.Anio);
                TL_FacturasTableAdapter FacturasTableAdapter;
                FacturasTableAdapter = new TL_FacturasTableAdapter();
                if (Convert.ToInt32(FacturasTableAdapter.ScalarQuery_FacturaFacturada(this.IdCliente, this.Mes, this.Anio)) > 0)
                {
                    this.dataGridView_facturas.Columns[2].Visible = false;
                    this.checkBox_facturado.Checked = true;
                    this.button_facturar.Enabled = false;
                    TotalFacturado = Convert.ToDecimal(FacturasTableAdapter.ScalarQuery_importeTotal(this.IdCliente, this.Mes, this.Anio));
                    this.textBox_total.Text = Convert.ToString(TotalFacturado);
                }
                else
                {
                    this.checkBox_facturado.Checked = false;
                    this.textBox_total.Text = Convert.ToString(this.detallesFacturasTableAdapter.ScalarQuery_TotalFactura(this.IdCliente, this.Mes, this.Anio));

                }
            }
            else
            {
                MessageBox.Show("No se han encontrado viajes para facturar", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Close();
            }

            
        }

        private void button_facturar_Click(object sender, EventArgs e)
        {
            DateTime fechaFactInicio = new DateTime(this.Anio, this.Mes, 01, 12, 00, 00);
            //DateTime fechaFactInicio = Convert.ToDateTime((string.Format("01/{0}/{1} 12:00:00 a.m.", this.Mes, this.Anio)));
            //DateTime fechaFactFin;
            int dia = 0;
            switch (this.Mes)
            {
                case 02:
                {
                    dia = 28;
                    break;
                }
                case 01: case 03: case 05: case 07: case 08: case 10: case 12:
                {
                    dia = 31;
                    break;
                }
                case 04: case 06: case 09: case 11:
                {
                    dia = 30;
                    break;
                }
                default: 
                    break;
            }

            DateTime fechaFactFin = new DateTime(this.Anio, this.Mes, dia, 12, 0, 0);
            
            try
            {
                Factura factura = new Factura(new Cliente(this.IdCliente), Convert.ToDecimal(this.textBox_total.Text), fechaFactFin, fechaFactInicio);
                factura.Facturar();

                MessageBox.Show("Facturacion Realizada con éxito!", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (System.Exception)
            {
                MessageBox.Show("Fallo la Facturación, verifique datos ingresados.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }



    }
}
